package com.mrx.translator.impl;

import com.mrx.translator.ITranslator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;

/**
 * {@link ITranslator} 的默认实现, 只做测试
 */
public class DefaultTranslator extends HashMap<String, String> implements ITranslator {

    private static final Logger logger = LoggerFactory.getLogger(DefaultTranslator.class);

    public DefaultTranslator() {
        put("Hello", "你好");
        put("World", "世界");
        put("HelloWorld", "你好世界");
    }

    /**
     * 执行翻译操作
     *
     * @param className  该字符串所在的类名
     * @param lineNumber 该字符串所在的行号, 如果是来自字段的字符串, lineNumber 将会是 0
     * @param source     要翻译的字符串
     * @return 翻译后的字符串, 不能为 null, 一个建议就是无法处理就返回 source
     */
    @Override
    public String translate(String className, int lineNumber, String source) {
        if (className.equals("com.mrx.example.HelloWorld") && lineNumber == 10) {
            if (source.equals("Hello "))
                source = source.strip();
        }
        String result = getOrDefault(source, source);
        logger.debug("translate, class: {}, line: {}, result: {} -> {}", className, lineNumber, source, result);
        return result;
    }

    public String getOrDefault(String key, String defaultValue) {
        String result = get(key);
        if (result == null) {
            logger.warn("未知字符串: [{}]", key);
            return defaultValue;
        }
        return result;
    }

}
